package a;


import java.util.Stack;

public class 单调栈 {

    /*
      1
      2
      4
    */
    public int[] zeng(int[] nums){
        int n =nums.length;
        int[] res = new int[n];
        Stack<Integer> s = new Stack<>();
        for(int i=n-1;i>=0;i--){
            while(!s.isEmpty() && nums[s.peek()]<=nums[i])
                s.pop();//小的全滚蛋

            //res[i]= s.isEmpty()?-1:(s.peek()-i); 看找没找到第一个大的 4->125,12弹出,5是一大，最后栈内45

            s.push(i);//索引
        }
        return res;
    }

    /*
      4
      2
      1
    */
    public int[] jian(int[] nums){
        int n =nums.length;
        int[] res = new int[n];
        Stack<Integer> s = new Stack<>();
        for(int i=n-1;i>=0;i--){
            int cur=nums[i];
            while(!s.isEmpty() && cur>s.peek()){
                //421->出现大于top=1的3，清理一下内部->43(满足`421`即可)

            }
            s.push(i);
        }
        return res;
    }
}
